<?
//--- valido la sesion
error_reporting(E_ERROR);
session_start();
if(!isset($_SESSION["SESSION_codUsuario"])){
    echo json_encode(array("ERROR"=>"La sesión ha caducado, verifique."));                
    exit();
}
//--- Valido el controlador
require_once('../utilidades/FuncionesGenerales.php');
require_once('../modelo/OrdTrabajoRecMercanciaItemFoto.php');
require_once('../modelo/OrdTrabajoRecMercanciaItemSubItemFoto.php');
require_once('../modelo/OrdTrabajoAdjunto.php');
require_once('../modelo/MaeCliente.php');

if($_POST["controlador"]==null){
    echo json_encode(array("ERROR"=>"Por favor Indicar el nombre del controlador Destino en el formulario para evitar conflictos con el 'Ruteo' de PHP."));
    return;
}elseif($_POST["controlador"]<>"UpLoadHandler"){
    return;
}

if ($_POST["OPERACION"] == "uploadFotoCliente"){
    
    //--- verifico los errores de carga del archivo
    $error=FuncionesGenerales::get()->verificarErrorUpload($_FILES['fileUpload']['error']);
    if ($error!==""){
        echo json_encode(array("ERROR"=>$error));
        exit();
    }
    
    $codUsuario =$_SESSION["SESSION_codUsuario"];
    $idCliente  =$_POST["idCliente"];
    
    
    $dir=  FuncionesGenerales::get()->getParameterValue("DirectorioFotosCliente");
    if($dir===""){
        echo json_encode(array("ERROR"=>"El valor del directorio para guardar las fotos no es valido, revise los parametros."));
        exit();
    }    
    //---  Defino el directorio raiz (arranca desde la Raiz de la plataforma) en el que se grabara el archivo
    $uploadDir = 'uploads/'.$dir.'/';  
    
    //--- sino existe, lo creo
    if(!is_dir("../".$uploadDir)){
        if(!mkdir("../".$uploadDir)){
            return "No fue posible crear los subdirectorios en el servidor (DirectorioFotosCliente). Verifique los permisos de escritura";
        }    
    }    
    
    //--- creo los subdirectorios (año/mes/dia)
    $error=FuncionesGenerales::get()->createSubDirAnioMesDia($uploadDir);
    if ( strpos($error,$uploadDir) === false){
        echo json_encode(array("ERROR"=>$error));
        exit();
    }else{
        $uploadDir=$error;
    }
    
    //---elimino el archivo que tenia antes
    $clie= new MaeCliente();
    $clie->selectThisById($idCliente);
    $logoAntes=$clie->getLogo();
    if($logoAntes!=""){
        if(file_exists("../".$logoAntes)){
            if(!unlink("../".$logoAntes)){
                echo json_encode(array("ERROR"=>"No fue posible eliminar la imagen que tenia antes el cliente. VERIFIQUE"));
                exit();
            }
        }    
    }  
    
    //--- esto me toca hacerlo para cada archivo que se vaya a cargar 
    //--- (crear el archivo y registrarlo en la BD)
    if ($_FILES['fileUpload']) {
        $file_array = FuncionesGenerales::get()->FilesToArray($_FILES['fileUpload']);
        $i=0;
        foreach ($file_array as $file) {
            $i++;
            
            //-- creo el nombre archivo
            $newFile = $_SESSION["SESSION_codUsuario"]."_".date("Y.m.d.H.i.s").".".$i.".".rand(100,999).".".end(explode('.', $file['name']));    
            //--- creo la ruta completa en la que quedara el nuevo archivo
            $path=$uploadDir.$newFile;
            //--- Muevo el archivo a la nueva carpeta
            if (!move_uploaded_file($file['tmp_name'], "../".$path)) {
                echo json_encode(array("ERROR"=>"No fue posible sibir el archivo, Verifique."));
                exit();
            }    
            
            //-- si se trata de una imagen, debo cambiar las dimensiones
            $path=FuncionesGenerales::get()->redimensionarImage($path);            
            
            //-- grabo el registro en la BD
            $resultUpdateLogo = MaeCliente::updateLogo($codUsuario,$idCliente,$path);
            //--- si se presento algun error borro el archivo
            $temp=json_decode($resultUpdateLogo, true);
            if (array_key_exists("ERROR", $temp)) {
                if(file_exists("../".$path)){
                    if(!unlink("../".$path)){
                        echo json_encode(array("ERROR"=>"se presento un error durante la grabacion, pero no se pudo borrar el arrchivo. VERIFIQUE"));
                        exit();
                    }
                }        
            }
        }
    }
    
    echo $resultUpdateLogo;
}

if ($_POST["OPERACION"] == "uploadOrdTrabajoRecMercanciaItemSubItemFoto"){
    
    //--- verifico los erroes de carga del archivo
    $error=FuncionesGenerales::get()->verificarErrorUpload($_FILES['fileUpload_SubItem']['error']);
    if ($error!==""){
        echo json_encode(array("ERROR"=>$error));
        exit();
    }
    
    $codUsuario             =$_SESSION["SESSION_codUsuario"];
    $idOrdTrabajoRecMercanciaItemSubItem  =$_POST["idOrdTrabajoRecMercanciaItemSubItem"];
    $observaciones=$_POST["observaciones"];
    
    
    $dir=  FuncionesGenerales::get()->getParameterValue("DirectorioRecMercanciaItemSubItemFotos");
    if($dir===""){
        echo json_encode(array("ERROR"=>"El valor del directorio para guardar las fotos no es valido, revise los parametros."));
        exit();
    }    
    //---  Defino el directorio raiz (arranca desde la Raiz de la plataforma) en el que se grabara el archivo
    $uploadDir = 'uploads/'.$dir.'/';  
    
    //--- sino existe, lo creo
    if(!is_dir("../".$uploadDir)){
        if(!mkdir("../".$uploadDir)){
            return "No fue posible crear los subdirectorios en el servidor (RecMercanciaSubItems_Fotos). Verifique los permisos de escritura";
        }    
    }    
    //--- creo los subdirectorios (año/mes/dia)
    $error=FuncionesGenerales::get()->createSubDirAnioMesDia($uploadDir);
    if ( strpos($error,$uploadDir) === false){
        echo json_encode(array("ERROR"=>$error));
        exit();
    }else{
        $uploadDir=$error;
    }
    
    //--- esto me toca hacerlo para cada archivo que se vaya a cargar
    if ($_FILES['fileUpload_SubItem']) {
        $file_array = FuncionesGenerales::get()->FilesToArray($_FILES['fileUpload_SubItem']);
        $i=0;
        foreach ($file_array as $file) {
            $i++;
            //-- creo el nombre archivo
            $newFile = $_SESSION["SESSION_codUsuario"]."_".date("Y.m.d.H.i.s").".".$i.".".rand(100,999).".".end(explode('.', $file['name']));    
            //--- creo la ruta completa en la que quedara el nuevo archivo
            $path=$uploadDir.$newFile;
            //--- Muevo el archivo a la nueva carpeta
            if (!move_uploaded_file($file['tmp_name'], "../".$path)) {
                echo json_encode(array("ERROR"=>"No fue posible sibir el archivo, Verifique."));
                exit();
            }  
            
            //-- si se trata de una imagen, debo cambiar las dimensiones
            $path=FuncionesGenerales::get()->redimensionarImage($path);            
            
            //-- grabo el registro en la BD
            $resultInsertOrdTrabajoRecMercanciaItemSubItemFoto = OrdTrabajoRecMercanciaItemSubItemFoto::insert($codUsuario,$idOrdTrabajoRecMercanciaItemSubItem,$path,$file['name'],$observaciones);
            //--- si se presento algun error borro el archivo
            $temp=json_decode($resultInsertOrdTrabajoRecMercanciaItemSubItemFoto, true);
            if (array_key_exists("ERROR", $temp)) {
                if(file_exists("../".$path)){
                    if(!unlink("../".$path)){
                        echo json_encode(array("ERROR"=>"se presento un error durante la grabacion, pero no se pudo borrar el arrchivo. VERIFIQUE"));
                        exit();
                    }
                }        
            }
        }
    }
    echo $resultInsertOrdTrabajoRecMercanciaItemSubItemFoto;
}

if ($_POST["OPERACION"] == "uploadOrdTrabajoRecMercanciaItemFoto"){
    
    //--- verifico los erroes de carga del archivo
    $error=FuncionesGenerales::get()->verificarErrorUpload($_FILES['fileUpload']['error']);
    if ($error!==""){
        echo json_encode(array("ERROR"=>$error));
        exit();
    }
    
    $codUsuario             =$_SESSION["SESSION_codUsuario"];
    $idOrdTrabajoRecMercanciaItem  =$_POST["idOrdTrabajoRecMercanciaItem"];
    $observaciones=$_POST["observaciones"];
    
    
    $dir=  FuncionesGenerales::get()->getParameterValue("DirectorioRecMercanciaItemFotos");
    if($dir===""){
        echo json_encode(array("ERROR"=>"El valor del directorio para guardar las fotos no es valido, revise los parametros."));
        exit();
    }    
    //---  Defino el directorio raiz (arranca desde la Raiz de la plataforma) en el que se grabara el archivo
    $uploadDir = 'uploads/'.$dir.'/';  
    
    //--- sino existe, lo creo
    if(!is_dir("../".$uploadDir)){
        if(!mkdir("../".$uploadDir)){
            return "No fue posible crear los subdirectorios en el servidor (RecMercanciaItem_Fotos). Verifique los permisos de escritura";
        }    
    }    
    //--- creo los subdirectorios (año/mes/dia)
    $error=FuncionesGenerales::get()->createSubDirAnioMesDia($uploadDir);
    if ( strpos($error,$uploadDir) === false){
        echo json_encode(array("ERROR"=>$error));
        exit();
    }else{
        $uploadDir=$error;
    }
    
    //--- esto me toca hacerlo para cada archivo que se vaya a cargar
    if ($_FILES['fileUpload']) {
        $file_array = FuncionesGenerales::get()->FilesToArray($_FILES['fileUpload']);
        $i=0;
        foreach ($file_array as $file) {
            $i++;
            //-- creo el nombre archivo
            $newFile = $_SESSION["SESSION_codUsuario"]."_".date("Y.m.d.H.i.s").".".$i.".".rand(100,999).".".end(explode('.', $file['name']));    
            //--- creo la ruta completa en la que quedara el nuevo archivo
            $path=$uploadDir.$newFile;
            //--- Muevo el archivo a la nueva carpeta
            if (!move_uploaded_file($file['tmp_name'], "../".$path)) {
                echo json_encode(array("ERROR"=>"No fue posible sibir el archivo, Verifique."));
                exit();
            }   
            
            //-- si se trata de una imagen, debo cambiar las dimensiones
            $path=FuncionesGenerales::get()->redimensionarImage($path);            
            
            //-- grabo el registro en la BD
            $resultInsertOrdTrabajoRecMercanciaItemFoto = OrdTrabajoRecMercanciaItemFoto::insert($codUsuario,$idOrdTrabajoRecMercanciaItem,$path,$file['name'],$observaciones);
            //--- si se presento algun error borro el archivo
            $temp=json_decode($resultInsertOrdTrabajoRecMercanciaItemFoto, true);
            if (array_key_exists("ERROR", $temp)) {
                if(file_exists("../".$path)){
                    if(!unlink("../".$path)){
                        echo json_encode(array("ERROR"=>"se presento un error durante la grabacion, pero no se pudo borrar el arrchivo. VERIFIQUE"));
                        exit();
                    }
                }        
            }
        }
    }
    echo $resultInsertOrdTrabajoRecMercanciaItemFoto;
}

if ($_POST["OPERACION"] == "uploadOrdTrabajoAdjunto"){
    
 //--- verifico los erroes de carga del archivo
    $error=FuncionesGenerales::get()->verificarErrorUpload($_FILES['fileUpload']['error']);
    if ($error!==""){
        echo json_encode(array("ERROR"=>$error));
        exit();
    }

    //--- ahora proceso a grabar todo en la base de datos
    $codUsuario     =$_SESSION["SESSION_codUsuario"];
    $idOrdTrabajo   =$_POST["idOrdTrabajo"];
    $tipoAdjunto    =$_POST["tipoAdjunto"];    
    $observaciones  =$_POST["observaciones"];
    //$nombreArchivoServidor=$path;//$_POST["nombreArchivoServidor"];
    //$nombreArchivoOriginal=$_FILES['fileUpload']['name'];//$_POST["nombreArchivoOriginal"];
        
    
    $dir=  FuncionesGenerales::get()->getParameterValue("DirectorioAdjuntosOT");
    if($dir===""){
        echo json_encode(array("ERROR"=>"El valor del directorio para guardar los adjuntos no es valido, revise los parametros."));
        exit();
    }    
    //---  Defino el directorio raiz (arranca desde la Raiz de la plataforma) en el que se grabara el archivo
    $uploadDir = 'uploads/'.$dir.'/';  
    
    //--- sino existe, lo creo
    if(!is_dir("../".$uploadDir)){
        if(!mkdir("../".$uploadDir)){
            return "No fue posible crear los subdirectorios en el servidor (OrdenTrabajo_adjuntos). Verifique los permisos de escritura";
        }    
    }
    
    //-- creo el directorio del tipo
    $uploadDir= $uploadDir.$tipoAdjunto.'/';
    if(!is_dir("../".$uploadDir)){
        if(!mkdir("../".$uploadDir)){
            return "No fue posible crear los subdirectorios en el servidor (TIPO). Verifique los permisos de escritura";
        }    
    }
    
    //--- creo los subdirectorios (año/mes/dia)
    $error=FuncionesGenerales::get()->createSubDirAnioMesDia($uploadDir);
    if ( strpos($error,$uploadDir) === false){
        echo json_encode(array("ERROR"=>$error));
        exit();
    }else{
        $uploadDir=$error;
    }
    
    //echo json_encode(array("ERROR"=>$uploadDir));
    //exit();
    
    //--- esto me toca hacerlo para cada archivo que se vaya a cargar
    if ($_FILES['fileUpload']) {
        $file_array = FuncionesGenerales::get()->FilesToArray($_FILES['fileUpload']);
        $i=0;
        foreach ($file_array as $file) {
            $i++;
            //-- creo el nombre archivo
            $newFile = $_SESSION["SESSION_codUsuario"]."_".date("Y.m.d.H.i.s").".".$i.".".rand(100,999).".".end(explode('.', $file['name']));    
            //--- creo la ruta completa en la que quedara el nuevo archivo
            $path=$uploadDir.$newFile;
            
            //--- Muevo el archivo a la nueva carpeta
            if (!move_uploaded_file($file['tmp_name'], "../".$path)) {
                echo json_encode(array("ERROR"=>"No fue posible sibir el archivo, Verifique."));
                exit();
            }     
            
            //-- si se trata de una imagen, debo cambiar las dimensiones
            $path=FuncionesGenerales::get()->redimensionarImage($path);            
            
            //-- grabo el registro en la BD
            $resultInsertOrdTrabajoAdjunto = OrdTrabajoAdjunto::insert($codUsuario,$idOrdTrabajo,$tipoAdjunto,$path,$file['name'],$observaciones);
            //--- si se presento algun error borro el archivo
            $temp=json_decode($resultInsertOrdTrabajoAdjunto, true);
            if (array_key_exists("ERROR", $temp)) {
                if(file_exists("../".$path)){
                    if(!unlink("../".$path)){
                        echo json_encode(array("ERROR"=>"se presento un error durante la grabacion, pero no se pudo borrar el arrchivo. VERIFIQUE"));
                        exit();
                    }
                }        
            }
        }
    }
    echo $resultInsertOrdTrabajoAdjunto;    
}

//uploadOrdTrabajoPlanilla

//uploadOrdTrabajoFoto

